<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>12_class</title>
</head>
<body>
</body>
<!--
1. 通过 class 定义类/实现类的继承
2. 在类中通过 constructor 定义构造方法
3. 通过 new 来创建类的实例
4. 通过 extends 来实现类的继承
5. 通过 super 调用父类的构造方法
6. 重写从父类中继承的一般方法
-->
<script type="text/javascript">
  function Phone(brand, price) {
    this.brand = brand;
    this.price = price;
  }

  Phone.prototype.call = function () {
    console.log('call...');
  }

  let nokia = new Phone('nokia', 5999);
  nokia.call();

  /*=========================================================================================*/

  class Person {
    // 静态属性
    static password;

    // 调用类的构造方法
    constructor(name, age) {
      this.name = name;
      this.age = age;
    }

    get password() {
      return this.password;
    }

    set password(password) {
      this.password = password;
    }

    // 静态方法
    static showPassword() {
      console.log(this.password);
    }

    // 定义一般的方法
    showName() {
      console.log(this.name, this.age);
    }
  }

  let person = new Person('kobe', 39);
  console.log(person, person.showName());

  // 定义一个子类
  class StrPerson extends Person {
    constructor(name, age, salary) {
      super(name, age); // 调用父类的构造方法
      this.salary = salary;
    }

    showName() { // 在子类自身定义方法
      console.log(this.name, this.age, this.salary);
    }
  }

  let str = new StrPerson('weide', 38, 1000000000);
  console.log(str);
  str.showName();
</script>
</html>
